﻿// SettingsInfoCtrl
ctrls.controller('SettingsInfoCtrl', function ($scope, $http, $routeParams, $location, $modal) {
    /* Định nghĩa biến toàn cục */
    $scope.data = {};
    $scope.strings = {};
    $scope.style = {};
    $scope.variable = {};
    $scope.tblResult = {};
    // Gán giá trị init
    $scope.tblResult.Options = $gridHelper.optBase({ width: 930 });
    /* Định nghĩa phương thức xử lý */
    // Xử lý lấy chuỗi resource
    $scope.getStrings = function () {
        $pc(function () {
            $scope.strings = {
                Title: $nm('ADM.SETTINGS.INFO.Title'),
                ColInfoName: $nm('ADM.SETTINGS.INFO.ColInfoName'),
                ColInfoValue: $nm('ADM.SETTINGS.INFO.ColInfoValue'),
                ColNotes: $nm('ADM.SETTINGS.INFO.ColNotes'),
                UpdateAll: $nm('ADM.SETTINGS.INFO.UpdateAll'),
                Upload: $nm('ADM.SETTINGS.INFO.Upload'),
                Editor: $nm('ADM.SETTINGS.INFO.Editor')
            };
        });
    };
    // Xử lý init
    $scope.init = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/settings/info.aspx/InitLayout',
            data: {},
            success: function (data) {
                if (!$dataHelper.toBoolean(data.HasAuth)) {
                    window.location = '/adm/login.html';
                    return;
                }
                // Gán dữ liệu 
                $scope.data = data;
                // Tiến hàng filter
                $scope.filter();
                $ti('');
            }
        });
    };
    // Xử lý filter
    $scope.filter = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/settings/info.aspx/Filter',
            data: {},
            success: function (data) {
                $scope.tblResult.ListData = data.ListData;
            }
        });
    };
    // Xử lý lưu thông tin cập nhật
    $scope.updateAll = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/settings/info.aspx/UpdateAll',
            data: function () {
                var data = { ListData: [] };
                // Gán dữ liệu cập nhật
                for (var idx in $scope.tblResult.ListData) {
                    var obj = $scope.tblResult.ListData[idx];
                    if (obj.HasChanged) {
                        data.ListData.push({
                            LocaleCd: obj.LocaleCd,
                            InfoCd: obj.InfoCd,
                            InfoValue: obj.InfoValue
                        });
                    }
                }
                // Kết quả trả về
                return data;
            },
            success: function (data) {
                var info = { Show: true, Messages: data.Messages };
                $scope.alert = info;
                $scope.filter();
            },
            error: function (err) {
                $scope.alert = err;
            }
        });
    };
    // Xử lý thay đổi data
    $scope.tblResultChange = function (data, obj) {
        $pc(function () {
            obj.HasChanged = true;
        });
    };
    // Xử lý đăng ảnh
    $scope.uploadFile = function (obj) {
        obj.HasChanged = true;
        var modalInstance = $modal.open({
            templateUrl: '/cts/com/ucs/html/upload.html',
            controller: 'UploadCtrl',
            resolve: {
                param: function () {
                    return {
                        Code: obj.InfoCd.replace('ma.company-infos.', ''),
                        LocaleCd: $pageHelper.getLang(),
                        FileCd: obj.InfoValue,
                        FileGroup: obj.InfoCd
                    };
                }
            }
        });
    };
    // Xử lý đăng ảnh
    $scope.editContent = function (obj) {
        obj.HasChanged = true;
        var modalInstance = $modal.open({
            templateUrl: '/cts/com/ucs/html/editor.html',
            controller: 'EditorCtrl',
            resolve: {
                param: function () {
                    return {
                        content: obj.InfoValue
                    };
                }
            }
        });
        modalInstance.result.then(function (data) {
            obj.InfoValue = data;
        });
    };

    /* Định nghĩa các events */
    // Tiến hành lấy chuỗi resource
    $scope.getStrings();
    // Tiến hành xử lý init
    $scope.init();

    /* Đăng ký các events */
});